Описание данных

Сведения о события и мероприятиях в сфере культуры, данные о которых внесены в автоматизированную информационную систему “Единое информационное пространство в сфере культуры”

Дата актаульности: 21.01.2020

Источник: данные Министерства Культуры РФ https://opendata.mkrf.ru/opendata/7705851331-events

Загрузка

Загрузка данных осуществляется с помощью функции get_data_from_dir из extract_data_from_json.R parsed_data <- get_data_from_dir('.\\data\\source\\data-15-structure-2')

Так как функция может сохранять получившийся dataframe, для дальнейшей работы можно использовать ранее полученный результат:

parsed_data <- readRDS('.\\data\\prepared\\20200121220605.rds')
df <- preprocess(parsed_data)
summary(df)
##      Name           ShortDescription   AgeRestriction     Price         
##  Length:411930      Length:411930      0 :195762      Min.   :    0.00  
##  Class :character   Class :character   12: 66458      1st Qu.:    0.00  
##  Mode  :character   Mode  :character   16: 26690      Median :    0.00  
##                                        18: 12250      Mean   :   77.73  
##                                        6 :110770      3rd Qu.:    0.00  
##                                                       Max.   :52000.00  
##                                                                         
##     MaxPrice              Category        StartDttm                  
##  Min.   :0.000e+00   Встречи  :189169   Min.   :2017-01-01 00:00:00  
##  1st Qu.:0.000e+00   Концерты : 67367   1st Qu.:2018-02-14 14:00:00  
##  Median :0.000e+00   Выставки : 54209   Median :2018-11-24 18:00:00  
##  Mean   :2.708e+05   Праздники: 42794   Mean   :2018-10-09 08:22:18  
##  3rd Qu.:0.000e+00   Спектакли: 22495   3rd Qu.:2019-06-21 17:00:00  
##  Max.   :1.001e+11   Прочие   : 18422   Max.   :2019-12-31 23:30:00  
##  NA's   :15255       (Other)  : 17474                                
##     EndDttm                     PlaceName          LocaleName       
##  Min.   :2017-01-01 12:59:00   Length:411930      Length:411930     
##  1st Qu.:2018-03-07 13:00:00   Class :character   Class :character  
##  Median :2018-12-14 18:00:00   Mode  :character   Mode  :character  
##  Mean   :2018-10-30 20:43:26                                        
##  3rd Qu.:2019-07-16 08:22:30                                        
##  Max.   :2026-12-09 14:00:00                                        
##                                                                     
##    Duration             Lat               Lng         
##  Length:411930     Min.   :-179.13   Min.   :-179.48  
##  Class :difftime   1st Qu.:  47.11   1st Qu.:  38.10  
##  Mode  :numeric    Median :  53.05   Median :  42.05  
##                    Mean   :  52.83   Mean   :  49.89  
##                    3rd Qu.:  56.15   3rd Qu.:  53.08  
##                    Max.   : 179.35   Max.   : 179.35  
## 

Визуализация

library(ggplot2)
library(scales)

df %>% 
  mutate(StartYear = format(StartDttm, "%Y")) %>% 
  mutate(duration_days = difftime(EndDttm, StartDttm, units = 'days')) %>% 
  filter(duration_days >=1 & duration_days <= 365 ) %>% 
  ggplot(aes(y=Price, x=duration_days, color=Category)) + 
    geom_point(alpha=0.7) +
    facet_wrap(~ StartYear) +
    labs(y='Цена', 
         x='Длительность', 
         color='Категория мероприятия',
         title='Цена и длительность мероприятия',
         subtitle='2017 - 2019 гг') +
    theme_light() 
## Don't know how to automatically pick scale for object of type difftime. Defaulting to continuous.

df %>% 
  mutate(StratYear = format(StartDttm, "%Y")) %>% 
  ggplot(aes(x=StratYear)) +
  geom_bar(aes(fill=AgeRestriction), position='fill') +
  labs(y='', 
         x='Год', 
         fill='Ограничение по возрасту',
         title='Процент мероприятий с разными возрастными ограничениями',
         subtitle='2017 - 2019 гг') +
  theme_light() 

df %>% 
  mutate(duration_days = difftime(EndDttm, StartDttm, units = 'days')) %>% 
  filter(duration_days >=1 & duration_days <= 365 ) %>% 
  ggplot(aes(x=AgeRestriction)) +
  geom_bar(aes(fill=Category), position='fill') +
  labs(y='', 
         x='Возрастное ограничение', 
         fill='Категория мероприятия',
         title='Категории мероприятий с разными возрастными ограничениями',
         subtitle='2017 - 2019 гг') +
  theme_light()

Карта с данными за 2019 год

library(leaflet)
## Warning: package 'leaflet' was built under R version 3.6.2
df_for_map <- df %>% 
  filter(StartDttm >= '2019-01-01 00:00:00')

labels <- sprintf(
  "<strong>%s</strong><br/>%s",
  df_for_map$Name, df_for_map$PlaceName
) %>% lapply(htmltools::HTML)


my_map <- df_for_map %>% 
  leaflet() %>% 
  addTiles %>% 
  addMarkers(lat = ~Lat, lng = ~Lng, 
             clusterOptions = markerClusterOptions(), 
             label = labels, 
             labelOptions = labelOptions(
    style = list("font-weight" = "normal", padding = "3px 8px"),
    textsize = "15px",
    direction = "auto"))
my_map